package com.uestc.ui;

import com.uestc.config.InitPath;
import com.uestc.utils.*;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

import java.io.File;

public class verifyView {
    private static File originFile;
    private static File packedFile;
    public static void showVerfyDialog() {
        Stage dialog = new Stage();
        dialog.setTitle("打包");
        VBox vbox = new VBox(10,
                new Label("Select the origin file:"),
                new Button("Browse"),
                new TextArea(), // 文件列表显示
                new Label("Select the packed file:"),
                new Button("Browse"),
                new TextArea(), // 文件列表显示
                new HBox(30));

        Button browseFilesButton = (Button) vbox.getChildren().get(1);

        TextArea filesTextArea = (TextArea) vbox.getChildren().get(2); // 选中文件列表显示
        filesTextArea.setWrapText(true); // 允许文本自动换行
        filesTextArea.setPrefRowCount(2); // 设置首选行数，可以根据需要调整
        filesTextArea.setPrefHeight(10); // 设置首选高度，可以根据需要调整
        filesTextArea.setEditable(false); // 设置为只读，用户不能编辑内容


        Button browseFilesButton2 = (Button) vbox.getChildren().get(4);

        TextArea filesTextArea2 = (TextArea) vbox.getChildren().get(5); // 选中文件列表显示
        filesTextArea2.setWrapText(true); // 允许文本自动换行
        filesTextArea2.setPrefRowCount(2); // 设置首选行数，可以根据需要调整
        filesTextArea2.setPrefHeight(10); // 设置首选高度，可以根据需要调整
        filesTextArea2.setEditable(false); // 设置为只读，用户不能编辑内容

        HBox lastBox = (HBox) vbox.getChildren().get(6);
        Button verifyButton = new Button("verify");
        Button backButton = new Button("back");
        lastBox.getChildren().addAll(verifyButton, backButton);
        lastBox.setMargin(verifyButton, new Insets(0, 0, 30, 0));


        browseFilesButton.setOnAction(e -> {
            FileChooser fileChooser = new FileChooser();
            fileChooser.setInitialDirectory(new File(InitPath.path));
            fileChooser.setTitle("Choose files");
            originFile = fileChooser.showOpenDialog(dialog);
            // Handle selected files
            if (originFile != null) {
                filesTextArea.setText(originFile.getName());
            }
        });

        browseFilesButton2.setOnAction(e -> {
            FileChooser fileChooser = new FileChooser();
            fileChooser.setInitialDirectory(new File(InitPath.path));
            fileChooser.setTitle("Choose files");
            packedFile = fileChooser.showOpenDialog(dialog);
            // Handle selected files
            if (packedFile != null) {
                filesTextArea2.setText(packedFile.getName());
            }
        });


        backButton.setOnAction(e->{
            dialog.close();
            MainMenu.showLocalDialog();
        });

        verifyButton.setOnAction(e -> {
            boolean isSame = FileComparator.areFilesIdentical(originFile, packedFile);
            if(isSame){
                AlertUtil.showAlert("验证成功，文件备份无误");
            }else {
                AlertUtil.showAlert("验证失败，文件备份有误");
            }
        });


        Scene scene = new Scene(vbox, 600, 600);
        dialog.setTitle("File Packer");
        dialog.setScene(scene);
        dialog.show();
    }
}
